part of "../basic.dart";

/// 指定一个特定的概率（介于0-100之间），通过返回的bool值表达结果是否成功`
bool probability(double percentage) {
  // 确保百分比在合法范围内
  if (percentage < 0 || percentage > 100) throw Bug("可能性百分比必须在0-100之间");

  // 生成0到99之间的随机数
  double random = Random().nextDouble() * 100;
  // 如果命中了6%的概率，则代表获得了一个珍珠草
  return random < percentage;
}

extension RandomMehtod on Random {
  /// 包含下界和上界的范围随机数生成
  double rangeDouble(double a, double b) {
    // 在a和b之间选出最小值作为下界
    final double lowerBound = min(a, b);

    // 计算a和b的差值（绝对值）为浮动因子
    final floatFactor = (a - b).abs();

    // 生成一个随机浮点数，并乘以浮动因子作为浮动值
    final float = floatFactor * Random().nextDouble();

    // 将下界+浮动值返回
    return lowerBound + float;
  }
}
